# -*- coding: utf-8 -*-
# author yzs
# date 2019-02-23
#
# 棋盘覆盖问题
# Description
# 棋盘覆盖问题：给定一个大小为2^n*2^n个小方格的棋盘，其中有一个位置已经被填充，现在要用一个L型（2*2个小方格组成的大方格中去掉其中一个小方格）
# 形状去覆盖剩下的小方格。求出覆盖方案，即哪些坐标下的小方格使用同一个L型格子覆盖。注意：坐标从0开始。左上方的第一个格子坐标为(0,0)，
# 第一行 第二个坐标为(0,1)，第二行第一个为(1,0)，以此类推。
# Input
# 输入第一行为测试用例个数，后面每一个用例有两行，第一行为n值和特殊的格子的坐标（用空格隔开），第二行为需要查找其属于同一个L型格子的格子坐标。
# Output
# 输出每一行为一个用例的解，先按照行值从小到大、再按照列值从小到大的顺序输出每一个用例的两个坐标；用逗号隔开。
# Sample Input 1
# 1
# 1 1 1
# 0 0
# Sample Output 1
# 0 1,1 0
import math


# 棋盘左上角x坐标，y坐标；特殊方格x坐标，y坐标；棋盘规模
def chess(tr, tc, pr, pc, size, lr, lc):
    if size == 1:
        return
    has_l = lr >= tr and lr <= tr + size - 1 and lc >= tc and lc <= tc + size - 1
    if not has_l:
        return
    # global mark
    global table
    l = []
    # mark += 1
    # count = mark
    half = size // 2
    if pr < tr + half and pc < tc + half:
        chess(tr, tc, pr, pc, half, lr, lc)
    else:
        # table[tr + half - 1][tc + half - 1] = count
        l.append([tr + half - 1, tc + half - 1])
        chess(tr, tc, tr + half - 1, tc + half - 1, half, lr, lc)
    if pr < tr + half and pc >= tc + half:
        chess(tr, tc + half, pr, pc, half, lr, lc)
    else:
        # table[tr + half - 1][tc + half] = count
        l.append([tr + half - 1, tc + half])
        chess(tr, tc + half, tr + half - 1, tc + half, half, lr, lc)
    if pr >= tr + half and pc < tc + half:
        chess(tr + half, tc, pr, pc, half, lr, lc)
    else:
        # table[tr + half][tc + half - 1] = count
        l.append([tr + half, tc + half - 1])
        chess(tr + half, tc, tr + half, tc + half - 1, half, lr, lc)
    if pr >= tr + half and pc >= tc + half:
        chess(tr + half, tc + half, pr, pc, half, lr, lc)
    else:
        # table[tr + half][tc + half] = count
        l.append([tr + half, tc + half])
        chess(tr + half, tc + half, tr + half, tc + half, half, lr, lc)
    if [lr, lc] in l:
        l.remove([lr, lc])
        l.sort()
        print(",".join(str(l[i][0]) + " " + str(l[i][1]) for i in range(len(l))))


# def show(table):
#     n = len(table)
#     for i in range(n):
#         for j in range(n):
#             print(table[i][j], end=' ')
#         print('')


# mark = 0
t = int(input().strip())
for i in range(t):
    data = list(map(int, input().strip().split()))
    p = list(map(int, input().strip().split()))
    n, pr, pc = data[0], data[1], data[2]
    lr, lc = p[0], p[1]
    global table
    size = int(math.pow(2, n))
    table = [[0 for x in range(size)] for y in range(size)]
    chess(0, 0, pr, pc, size, lr, lc)
    #show(table)

table = []
